import cv2
import numpy as np

# 掩膜需要使用的两个重要函数
# cv2.morphologyEx()  通过掩膜，找到颜色的指定区域
# cv2.inRange()  设置HSV需要获取的颜色值的范围 --> 最终定义为掩膜
img = cv2.imread("./basic01.png")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# HSV中的红色范围
lowerb = np.array([156, 43, 46])
upperb = np.array([180, 255, 255])
# mask 掩膜
mask = cv2.inRange(hsv_img, lowerb, upperb)
# 通过矩形轮廓检测的方式锁定红色区域
# cv2.RETR_LIST 外轮廓检测
# cv2.CHAIN_APPROX_SIMPLE 轮廓近似算法（找到所有轮廓的端点）
contours = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

# 将上述的端点的近似矩形取出 返回值是一个左上角的点和宽高
x1, y1, w, h = cv2.boundingRect(contours[0][0])
x2, y2 = x1 + w, y1 + h
# 绘制矩形
# cv2.rectangle(绘制的图, 左上角的坐标, 右下角的坐标, BGR的颜色设置, 绘制框的宽度)
cv2.rectangle(img, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)

cv2.imshow("img", img)
cv2.waitKey(0)


